# -*- coding: utf-8 -*-
# Author: xiantingDeng
# File: file_util.py
# Time: 18:32


import os
import time


def get_root_dir():
    '''
    获取当前项目根路径
    :return: 返回当前项目路径
    '''
    return os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))


def get_sub_dir(sub_dir_name):
    '''
    获取项目子目录下的路径
    :param sub_dir_name: 项目子目录下的名称
    :return: 返回当前获取到的项目路径
    '''
    return os.path.join(get_root_dir(), sub_dir_name)


def get_output_dir():
    '''
    获取output项目路径
    :return: 返回获取到的项目路径
    '''
    return os.path.join(get_root_dir(), "optput")


def get_log_dir(file):
    '''
    获取log日志下的绝对路径
    :return: 返回log日志绝对路径
    '''
    log_file = os.path.join(get_sub_dir("optput"), "log")
    if not os.path.exists(log_file):
        os.mkdir(log_file)
    return os.path.join(log_file, "{}{}.log".format(file, time.strftime("'%Y-%m-%d_%H_%M", time.localtime())))


def get_real_output_dir(dir_name):
    '''
    获取output文件夹下子文件夹目录
    :param dir_name: 文件名称
    :return: 返回文件路径
    '''
    return os.path.join(get_output_dir(), dir_name)


def get_real_ini_dir(dir_name):
    '''
    获取config文件夹下子文件目录的ini文件
    :param dir_name: 文件名称
    :return: 返回文件夹目录绝对路径
    '''
    return os.path.join(get_sub_dir("config"), dir_name)


def get_data_file_path(data_naem):
    '''
    获取data下的文件路径
    :param data_naem: 文件名称
    :return: 返回data下的绝对路径
    '''
    return os.path.join(get_sub_dir("data"), data_naem)


def get_data_yaml(name):
    '''
    获取data/yaml目录下的文件
    :param name: 文件名称
    :return: 返回文件绝对路径
    '''
    return os.path.join(get_data_file_path("yaml"), name)


def get_data_json(name):
    '''
    获取data/json目录下的文件
    :param name: 文件名称
    :return: 返回文件绝对路径
    '''
    return os.path.join(get_data_file_path("json"), name)


def get_data_excel(name):
    '''
    获取data/excel目录下的文件
    :param name: 文件名称
    :return: 返回文件下绝对路径
    '''
    return os.path.join(get_data_file_path("excel"), name)


def get_case_dir(name):
    '''
    获取case下的目录文件
    :param name: 文件名字
    :return: 返回文件绝对路径
    '''
    return os.path.join(get_root_dir(), "case", name)


def get_case_folders():
    '''
    获取case下的所有文件夹
    :return: 通过列表形式返回
    '''
    pass


def get_time_report():
    '''
    生成以时间戳为名称的测试报告
    :return: 返回测试报告名称
    '''
    times = time.strftime('%Y-%m-%d_%H_%M', time.localtime())
    return os.path.join(get_real_output_dir("report"), times)


def create_file(file_path, content):
    """ 当文件存在时，则不再创建和覆盖,创建后写入
    """
    try:
        if not os.path.exists(file_path):
            with open(file_path, "w", encoding="utf-8") as f:
                f.write(content)
    except Exception as e:
        raise e


def mkdir(dir_path):
    """ 创建路径
    """
    # 去除首位空格
    _dir = dir_path.strip()
    _dir = dir_path.rstrip("\\")
    _dir = dir_path.rstrip("/")

    # 判断路径是否存在
    is_exists = os.path.exists(_dir)

    if not is_exists:
        try:
            os.makedirs(_dir)
        except Exception as e:
            raise ("Directory creation failed：%s" % e)


if __name__ == '__main__':
    # print(get_time_report())
    s = get_sub_dir("case")
    for root, dirs, files in os.walk(s):
        for dir in dirs:
            print(dir)
    s = []
